﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
using System.Collections.ObjectModel;
using System.Globalization;
using System.Collections;
using System.Data;
using Model;

namespace Interfaces.Programa
{
    public partial class CrearPrograma : System.Web.UI.Page
    {
        Miembroo directora { get { return (Miembroo)ViewState["directora"]; } set { ViewState["directora"] = value; } }
        ICollection list;
        ICollection<Miembroo> codirectora { get { return (ICollection<Miembroo>)ViewState["codirec"]; } set { ViewState["codirec"] = value; } }
        Model.Programa prog = new Model.Programa();
        protected void Page_Load(object sender, EventArgs e)
        {
            list = DataBase.Miembro2.BDMiembro.DevolverTodos();
            if (!IsPostBack)
            {
                Miembros.DataSource = DataBase.Miembro2.BDMiembro.DevolverTodos();
                Miembros.DataBind();
                codirectora = new Collection<Miembroo>();
            }
            errorLb.Text = String.Empty;
        }
        protected void Page_PreInit(object sender, EventArgs e)
        {
            if (Session["BuscarMaster"] != null)
            {
                string res = (string)Session["BuscarMaster"];
                this.MasterPageFile = res;
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            this.MultiView1.ActiveViewIndex = 1;

        }
        protected void checkDate(object sender, EventArgs e)
        {
            
        }

        protected void BuscarBtn_Click(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add(new DataColumn("CI", typeof(long)));
            dt.Columns.Add(new DataColumn("Nombre", typeof(String)));
            dt.Columns.Add(new DataColumn("ApellidoPaterno", typeof(String)));
            dt.Columns.Add(new DataColumn("ApellidoMaterno", typeof(String)));
            dt.Columns.Add(new DataColumn("Cargo", typeof(String)));

            String format = @"^[a-zA-Z0-9 ]";
            Collection<Miembroo> resp = new Collection<Miembroo>();
            if (!String.IsNullOrEmpty(TextBox6.Text))
            {
                if (!Regex.IsMatch(TextBox6.Text, format))
                {
                    throw new Exception("Formato incorrecto");
                }
            }
            if (list != null)
            {
                if (TextBox6.Text!= null)
                {
                    
                    foreach (DataRowView prod in list)
                    {
                        Miembroo m = new Miembroo();
                        m.CI = Convert.ToInt64(prod["CI"]);
                        m.Cargo=prod["Cargo"].ToString();
                        m.Nombre = prod["Nombre"].ToString().ToLower(CultureInfo.CurrentCulture);
                        m.ApellidoPaterno = prod["ApellidoPaterno"].ToString().ToLower(CultureInfo.CurrentCulture);
                        m.ApellidoMaterno = prod["ApellidoMaterno"].ToString().ToLower(CultureInfo.CurrentCulture);
                        String lword = TextBox6.Text.ToLower(CultureInfo.CurrentCulture);
                        if (m.Nombre.Contains(lword) || m.ApellidoPaterno.Contains(lword) || m.CI.ToString().Contains(lword))
                        {
                            DataRow dr = dt.NewRow();
                          dr[0]=(m.CI.ToString());
                            dr[1]=(m.Nombre);
                            dr[2]=(m.ApellidoPaterno);
                            dr[3]=(m.ApellidoMaterno);
                            dr[4]=(m.Cargo);
                            dt.Rows.Add(dr);
                           
                            
                        }
                    }
                 }
            }
            if (dt.Rows.Count>0)
            {
                DataView dv = new DataView(dt);
                ICollection t = (ICollection)dv;
                Miembros.DataSource = t;
                Miembros.DataBind();
            }

        }

        protected void DirectorBtn_Click(object sender, EventArgs e)
        {
            //if (!Page.IsPostBack)
            {
                LinkButton b = sender as LinkButton;
                bool sta = false;
                Miembroo auxDirectora = new Miembroo();
                try
                {
                    auxDirectora = DataBase.Miembro2.BDMiembro.DevolverMiembroPorCi(Convert.ToInt64(b.CommandArgument));
                    if (codirectora != null)
                    {
                        foreach (var item in codirectora)
                        {
                            if (auxDirectora.CI == item.CI)
                            {
                                errorLb.Text="La directora no puede ser codirectora";
                                sta = true;
                            }
                            break;
                        }
                    }
                    if (!sta)
                    {
                        directora = auxDirectora;
                        nombre.Text = directora.Nombre + " " + directora.ApellidoPaterno;
                        Label9.Text = directora.CI.ToString();
                        Button2.Visible = true;
                    }
                }
                catch (Exception ex)
                {
                    errorLb.Text = ex.Message;
                }
            }
        }

        protected void DataList3_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void Volver_Click(object sender, EventArgs e)
        {
            this.MultiView1.ActiveViewIndex = 0;
            if (nombre.Text != String.Empty)
            {
                dirLbl.Visible = true;
                //Button2.Visible = true;
            }
            if (CodirectorasDataList.Items.Count !=0)
            {
                codLbl.Visible = true;
            }

        }

        protected void Button9_Click(object sender, EventArgs e)
        {
            error.Text = " ";
            try
            {
                if (directora != null && codirectora!=null)
                {
                    long id = DataBase.Miembro2.BDMiembro.DevolverMiembroPorUsuario(User.Identity.Name).CI;
                    prog=Processes.Programa.GestorPrograma.CrearPrograma(nombreTbx.Text, TextBox4.Text, TextBox5.Text, DropDownList1.SelectedValue, directora,id);
                    foreach (Miembroo p in codirectora)
                    {
                       DataBase.Codirectora.BDCodirectora.AgregarCodirectora(p.CI, prog); 
                    }
                    Response.Redirect("ProgramaGuardado.aspx");
                }
                else
                    error.Text = "Debe asignar al menos una directora";
            }
            catch (Exception ex)
            {
                if (ex.Message == "Todos los campos son obligatorios")
                {
                    nomError.Visible = true;
                    iniError0.Visible = true;
                    finError1.Visible = true;
                }
                error.Text = ex.Message;
            } 
        }

        protected void CodiBtn_Click(object sender, EventArgs e)
        {
            LinkButton b = sender as LinkButton;
            bool esta = false;
            Miembroo mi = new Miembroo();
            mi=DataBase.Miembro2.BDMiembro.DevolverMiembroPorCi(Convert.ToInt64(b.CommandArgument));
            if (directora != null)
            {
                if (directora.CI == mi.CI)
                {
                    errorLb.Text = "La directora no puede ser codirectora";
                    esta = true;
                }
            }
            foreach (Miembroo item in codirectora)
            {
                if (item.CI == mi.CI)
                {
                    errorLb.Text = "Esta persona ya es codirectora";
                    esta = true;
                    break;
                }
            }
            if(!esta)
                codirectora.Add(mi);
            CodirectorasDataList.DataSource = codirectora;
            CodirectorasDataList.DataBind();
        }

        protected void Button6_Click(object sender, EventArgs e)
        {
            LinkButton b=sender as LinkButton;
            foreach (Miembroo p in codirectora)
            {
                if (p.CI == Convert.ToInt64(b.CommandArgument))
                {
                    codirectora.Remove(p);
                    break;
                }
            }
            CodirectorasDataList.DataSource = codirectora;
            CodirectorasDataList.DataBind();
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            nombre.Text = String.Empty;
            directora = null;

        }

        protected void DataList3_ItemCommand(object source, DataListCommandEventArgs e)
        {
                
            
        }

        protected void Miembros_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        /*protected void Miembros_ItemCommand(object source, DataListCommandEventArgs e)
        {
            Label lbl = (Label)e.Item.FindControl("CI");
            bool sta = false;
            Model.Miembro auxDirectora = new Model.Miembro();
            try
            {
                auxDirectora = DataBase.Miembro2.BDMiembro.DevolverMiembroPorCi(Convert.ToInt64(lbl.Text));
                if (codirectora != null)
                {
                    foreach (var item in codirectora)
                    {
                        if (auxDirectora.CI == item.CI)
                        {
                            Response.Write("<script>alert('La directora no puede ser codirectora'); </script>");
                            sta = true;
                        }
                        break;
                    }
                }
                if (!sta)
                {
                    directora = auxDirectora;
                    Label5.Text = directora.Nombre + " " + directora.ApellidoPaterno;
                    Label9.Text = directora.CI.ToString();
                    Button2.Visible = true;
                }
            }
            catch (Exception ex)
            {
                errorLb.Text = ex.Message;
            }
        }*/
    }
}